﻿Imports CapaLogica.CL.Usuario
Imports CapaLogica.CL.Carrera
Imports CapaLogica.CL.Grupo
Imports CapaLogica.CL.UtilidadesGenerales

Public Class frmMatricularEstudiante

    Private id As Integer
    Private primeraVez As Boolean = True

    Public Sub bloquear()
        gbxGrupos.Enabled = False
    End Sub

    Public Sub desbloquear()
        gbxGrupos.Enabled = True
    End Sub

    Public Sub refrescar()
        cbxCarreras.SelectedIndex = -1
        cbxCursos.SelectedIndex = -1
        lblCedula.Text = "Cédula:"
        lblNombre.Text = "Nombre:"
        limpiarListBox(lbxGrupos)
        limpiarListBox(lbxSeleccionados)
        txtCedula.Text = ""
        bloquear()
    End Sub



    Private Sub tsbCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Close()

    End Sub

    Private Function validar() As Boolean
        If lbxSeleccionados.Items.Count = 0 And primeraVez = True Then
            MsgBox("Debe seleccionar los grupos que matriculará el estudiante.", MsgBoxStyle.Exclamation, "Error")
            Return False
        End If

        Return True
    End Function

    Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        Try
            If txtCedula.Text = "" Then
                MsgBox("Debe ingresar la cédula del estudiante.", MsgBoxStyle.Exclamation, "Error")
            Else
                Dim estudiante As Dictionary(Of String, Object) = GestorUsuario.buscarUsuarioPorCedula(txtCedula.Text, 1)
                cargarDatosEstudiante(estudiante)
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
        End Try

    End Sub

    Private Sub frmMatricularEstudiante_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        bloquear()
        setearLista(lbxSeleccionados)
        setearLista(lbxGrupos)
    End Sub

    Private Sub tsbRefrescar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbRefrescar.Click
        refrescar()
    End Sub


    Private Sub btnMatricular_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMatricular.Click
        Dim msjPregunta As String = ""
        Dim msjResult As String = ""
        Dim msjError As String = ""

        If primeraVez = True Then
            msjPregunta = "¿Desea matricular el estudiante a los grupos seleccionados?"
            msjResult = "¡El estudiante ha sido matriculado!"
            msjError = "¡El estudiante no ha sido matriculado!"
        Else
            msjPregunta = "¿Desea modificar los grupos asociados del estudiante? Recuerde que si el estudiante ya no esta asociado a un grupo, ya podra partisipar en su foro."
            msjResult = "¡Se ha guardado los cambios!"
            msjError = "No se han guardado los cambios."
        End If


        If validar() Then
            Dim button As DialogResult = MessageBox.Show(msjPregunta, Me.Text, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)
            If button = DialogResult.Yes Then
                Try
                    If primeraVez = True Then
                        GestorGrupo.matricularEstudiante(id, obtenerIdsDeListBox(lbxSeleccionados))
                    Else
                        GestorGrupo.modificarMatriculaEstudiante(id, obtenerIdsDeListBox(lbxSeleccionados))
                    End If

                    MsgBox(msjResult, MsgBoxStyle.Information, "Grupo")
                    refrescar()
                Catch ex As Exception
                    MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
                End Try

            Else
                MsgBox(msjError, MsgBoxStyle.Information, "Grupo")

            End If
        End If
    End Sub

    Private Sub btnAsociar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsociar.Click
        If lbxGrupos.SelectedIndex > -1 Then
            cambiarElementosDeListas(lbxGrupos, lbxSeleccionados)

        Else
            MsgBox("Debe seleccionar al menos un grupo para cambiarlo de lista.", MsgBoxStyle.Exclamation, "Error")
        End If
    End Sub

    Private Sub btnDesasociar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDesasociar.Click
        If lbxSeleccionados.SelectedIndex > -1 Then
            cambiarElementosDeListas(lbxSeleccionados, lbxGrupos)

        Else
            MsgBox("Debe seleccionar al menos un grupo para cambiarlo de lista.", MsgBoxStyle.Exclamation, "Error")
        End If
    End Sub

    Private Sub cargarDatosEstudiante(ByVal estudiante As Dictionary(Of String, Object))

        lblNombre.Text = "Nombre: " + estudiante.Item("ap1") + " " + estudiante.Item("ap2") + " " + estudiante.Item("nombre")
        lblCedula.Text = "Cédula: " + estudiante.Item("cedula")
        id = Val(estudiante.Item("id"))
        llenarComoBox(cbxCarreras, GestorCarrera.listarCarrerasEstudianteUi(id), "--Seleccione la Carrera--")
        Dim gruposEstudiante As List(Of Informacion) = GestorGrupo.listarGruposEstudiante(id)

        If gruposEstudiante.Count <> 0 Then
            llenarLista(lbxSeleccionados, gruposEstudiante)
            eliminarElementosRepetidos(lbxGrupos, lbxSeleccionados)
            primeraVez = False
        End If

        desbloquear()

    End Sub

    Private Sub cbxCarreras_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbxCarreras.SelectedIndexChanged
        Try
            Dim indice As Integer = cbxCarreras.SelectedIndex
            If indice > 0 Then
                llenarComoBox(cbxCursos, CapaLogica.GestorCurso.listarCursosDeCarrera(obtenerIdComboBox(cbxCarreras)),
                                "--Seleccione el Curso--")
            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
        End Try
    End Sub

    Private Sub cbxCursos_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbxCursos.SelectedIndexChanged
        Try
            Dim indice As Integer = cbxCursos.SelectedIndex
            If indice > 0 Then
                Dim grupos As List(Of Informacion) = GestorGrupo.listarGruposCurso(obtenerIdComboBox(cbxCursos))
                If grupos.Count <> 0 Then
                    llenarLista(lbxGrupos, grupos)
                    eliminarElementosRepetidos(lbxGrupos, lbxSeleccionados)
                End If

            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
        End Try
    End Sub

    Private Sub tsbCancelar_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbCancelar.Click
        Me.Dispose()
    End Sub

End Class